<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />

<meta name="viewport" content="width=device-width, initial-scale=1" />

<meta name="author" content="Edzer Pebesma and Dewey Dunnington" />


<title>7. Spherical geometry in sf using s2geometry</title>

<script>// Pandoc 2.9 adds attributes on both header and div. We remove the former (to
// be compatible with the behavior of Pandoc < 2.8).
document.addEventListener('DOMContentLoaded', function(e) {
  var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
  var i, h, a;
  for (i = 0; i < hs.length; i++) {
    h = hs[i];
    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6
    a = h.attributes;
    while (a.length > 0) h.removeAttribute(a[0].name);
  }
});
</script>

<style type="text/css">
  code{white-space: pre-wrap;}
  span.smallcaps{font-variant: small-caps;}
  span.underline{text-decoration: underline;}
  div.column{display: inline-block; vertical-align: top; width: 50%;}
  div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
  ul.task-list{list-style: none;}
    </style>



<style type="text/css">
  code {
    white-space: pre;
  }
  .sourceCode {
    overflow: visible;
  }
</style>
<style type="text/css" data-origin="pandoc">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code > span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {   }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */

</style>
<script>
// apply pandoc div.sourceCode style to pre.sourceCode instead
(function() {
  var sheets = document.styleSheets;
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
    try { var rules = sheets[i].cssRules; } catch (e) { continue; }
    var j = 0;
    while (j < rules.length) {
      var rule = rules[j];
      // check if there is a div.sourceCode rule
      if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") {
        j++;
        continue;
      }
      var style = rule.style.cssText;
      // check if color or background-color is set
      if (rule.style.color === '' && rule.style.backgroundColor === '') {
        j++;
        continue;
      }
      // replace div.sourceCode by a pre.sourceCode rule
      sheets[i].deleteRule(j);
      sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
    }
  }
})();
</script>




<style type="text/css">body {
background-color: #fff;
margin: 1em auto;
max-width: 700px;
overflow: visible;
padding-left: 2em;
padding-right: 2em;
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.35;
}
#TOC {
clear: both;
margin: 0 0 10px 10px;
padding: 4px;
width: 400px;
border: 1px solid #CCCCCC;
border-radius: 5px;
background-color: #f6f6f6;
font-size: 13px;
line-height: 1.3;
}
#TOC .toctitle {
font-weight: bold;
font-size: 15px;
margin-left: 5px;
}
#TOC ul {
padding-left: 40px;
margin-left: -1.5em;
margin-top: 5px;
margin-bottom: 5px;
}
#TOC ul ul {
margin-left: -2em;
}
#TOC li {
line-height: 16px;
}
table {
margin: 1em auto;
border-width: 1px;
border-color: #DDDDDD;
border-style: outset;
border-collapse: collapse;
}
table th {
border-width: 2px;
padding: 5px;
border-style: inset;
}
table td {
border-width: 1px;
border-style: inset;
line-height: 18px;
padding: 5px 5px;
}
table, table th, table td {
border-left-style: none;
border-right-style: none;
}
table thead, table tr.even {
background-color: #f7f7f7;
}
p {
margin: 0.5em 0;
}
blockquote {
background-color: #f6f6f6;
padding: 0.25em 0.75em;
}
hr {
border-style: solid;
border: none;
border-top: 1px solid #777;
margin: 28px 0;
}
dl {
margin-left: 0;
}
dl dd {
margin-bottom: 13px;
margin-left: 13px;
}
dl dt {
font-weight: bold;
}
ul {
margin-top: 0;
}
ul li {
list-style: circle outside;
}
ul ul {
margin-bottom: 0;
}
pre, code {
background-color: #f7f7f7;
border-radius: 3px;
color: #333;
white-space: pre-wrap; 
}
pre {
border-radius: 3px;
margin: 5px 0px 10px 0px;
padding: 10px;
}
pre:not([class]) {
background-color: #f7f7f7;
}
code {
font-family: Consolas, Monaco, 'Courier New', monospace;
font-size: 85%;
}
p > code, li > code {
padding: 2px 0px;
}
div.figure {
text-align: center;
}
img {
background-color: #FFFFFF;
padding: 2px;
border: 1px solid #DDDDDD;
border-radius: 3px;
border: 1px solid #CCCCCC;
margin: 0 5px;
}
h1 {
margin-top: 0;
font-size: 35px;
line-height: 40px;
}
h2 {
border-bottom: 4px solid #f7f7f7;
padding-top: 10px;
padding-bottom: 2px;
font-size: 145%;
}
h3 {
border-bottom: 2px solid #f7f7f7;
padding-top: 10px;
font-size: 120%;
}
h4 {
border-bottom: 1px solid #f7f7f7;
margin-left: 8px;
font-size: 105%;
}
h5, h6 {
border-bottom: 1px solid #ccc;
font-size: 105%;
}
a {
color: #0033dd;
text-decoration: none;
}
a:hover {
color: #6666ff; }
a:visited {
color: #800080; }
a:visited:hover {
color: #BB00BB; }
a[href^="http:"] {
text-decoration: underline; }
a[href^="https:"] {
text-decoration: underline; }

code > span.kw { color: #555; font-weight: bold; } 
code > span.dt { color: #902000; } 
code > span.dv { color: #40a070; } 
code > span.bn { color: #d14; } 
code > span.fl { color: #d14; } 
code > span.ch { color: #d14; } 
code > span.st { color: #d14; } 
code > span.co { color: #888888; font-style: italic; } 
code > span.ot { color: #007020; } 
code > span.al { color: #ff0000; font-weight: bold; } 
code > span.fu { color: #900; font-weight: bold; } 
code > span.er { color: #a61717; background-color: #e3d2d2; } 
</style>




</head>

<body>




<h1 class="title toc-ignore">7. Spherical geometry in sf using
s2geometry</h1>
<h4 class="author">Edzer Pebesma and Dewey Dunnington</h4>



<p><strong>For a better version of the sf vignettes see</strong> <a href="https://r-spatial.github.io/sf/articles/" class="uri">https://r-spatial.github.io/sf/articles/</a></p>
<div id="introduction" class="section level1">
<h1>Introduction</h1>
<p>This vignette describes what spherical geometry implies, and how
package <code>sf</code> uses the s2geometry library (<a href="https://s2geometry.io" class="uri">https://s2geometry.io</a>) for
geometrical measures, predicates and transformations. The code in this
vignette only runs if <code>s2</code> has been installed, e.g. with</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">install.packages</span>(<span class="st">&quot;s2&quot;</span>)</span></code></pre></div>
<p>and is available. After <code>sf</code> has been loaded, you can
check if <code>s2</code> is being used:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>()</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] TRUE</span></span></code></pre></div>
<p>Attach the <code>s2</code> package as follows:</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(s2)</span></code></pre></div>
<p>Most of the package’s functions start with <code>s2_</code> in the
same way that most <code>sf</code> function names start with
<code>st_</code>. Most <code>sf</code> functions automatically use
<code>s2</code> functions when working with ellipsoidal coordinates; if
this is not the case, e.g. for <code>st_voronoi()</code>, a warning
like</p>
<pre><code>Warning message:
In st_voronoi.sfc(st_geometry(x), st_sfc(envelope), dTolerance,  :
  st_voronoi does not correctly triangulate longitude/latitude data</code></pre>
<p>is emitted.</p>
</div>
<div id="projected-and-geographic-coordinates" class="section level1">
<h1>Projected and geographic coordinates</h1>
<p>Spatial coordinates either refer to <em>projected</em> (or Cartesian)
coordinates, meaning that they are associated to points on a flat space,
or to unprojected or <em>geographic</em> coordinates, when they refer to
angles (latitude, longitude) pointing to locations on a sphere (or
ellipsoid). The flat space is also referred to as <span class="math inline">\(R^2\)</span>, the sphere as <span class="math inline">\(S^2\)</span></p>
<p>Package <code>sf</code> implements <em>simple features</em>, a
standard for point, line, and polygon geometries where geometries are
built from points (nodes) connected by straight lines (edges). The
simple feature standard does not say much about its suitability for
dealing with geographic coordinates, but the topological relational
system it builds upon (<a href="https://en.wikipedia.org/wiki/DE-9IM">DE9-IM</a>) refer to <span class="math inline">\(R^2\)</span>, the two-dimensional flat space.</p>
<p>Yet, more and more data are routinely served or exchanged using
geographic coordinates. Using software that assumes an <span class="math inline">\(R^2\)</span>, flat space may work for some
problems, and although <code>sf</code> up to version 0.9-x had some
functions in place for spherical/ellipsoidal computations (from package
<code>lwgeom</code>, for computing area, length, distance, and for
segmentizing), it has also happily warned the user that it is doing
<span class="math inline">\(R^2\)</span>, flat computations with such
coordinates with messages like</p>
<pre><code>although coordinates are longitude/latitude, st_intersects assumes that they are planar</code></pre>
<p>hinting to the responsibility of the user to take care of potential
problems. Doing this however leaves ambiguities, e.g. whether
<code>LINESTRING(-179 0,179 0)</code></p>
<ul>
<li>passes through <code>POINT(0 0)</code>, or</li>
<li>passes through <code>POINT(180 0)</code></li>
</ul>
<p>and whether it is</p>
<ul>
<li>a straight line, cutting through the Earth’s surface, or</li>
<li>a curved line following the Earth’s surface</li>
</ul>
<p>Starting with <code>sf</code> version 1.0, if you provide a spatial
object in a geographical coordinate reference system, <code>sf</code>
uses the new package <code>s2</code> (Dunnington, Pebesma, Rubak 2020)
for spherical geometry, which has functions for computing pretty much
all measures, predicates and transformations <em>on the sphere</em>.
This means:</p>
<ul>
<li>no more hodge-podge of some functions working on <span class="math inline">\(R^2\)</span>, with annoying messages, some on the
ellipsoid</li>
<li>a considerable speed increase for some functions</li>
<li>no computations on the ellipsoid (which are considered more
accurate, but are also slower)</li>
</ul>
<p>The <code>s2</code> package is really a wrapper around the C++ <a href="https://s2geometry.io">s2geometry</a> library which was written by
Google, and which is used in many of its products (e.g. Google Maps,
Google Earth Engine, Bigquery GIS) and has been translated in several
other programming languages.</p>
<p>With projected coordinates <code>sf</code> continues to work in <span class="math inline">\(R^2\)</span> as before.</p>
</div>
<div id="fundamental-differences" class="section level1">
<h1>Fundamental differences</h1>
<p>Compared to geometry on <span class="math inline">\(R^2\)</span>, and
DE9-IM, the <code>s2</code> package brings a few fundamentally new
concepts, which are discussed first.</p>
<div id="polygons-on-s2-divide-the-sphere-in-two-parts" class="section level2">
<h2>Polygons on <span class="math inline">\(S^2\)</span> divide the
sphere in two parts</h2>
<p>On the sphere (<span class="math inline">\(S^2\)</span>), any polygon
defines two areas; when following the exterior ring, we need to define
what is inside, and the definition is <em>the left side of the enclosing
edges</em>. This also means that we can flip a polygon (by inverting the
edge order) to obtain the other part of the globe, and that in addition
to an empty polygon (the empty set) we can have the full polygon (the
entire globe).</p>
<p>Simple feature geometries should obey a ring direction too: exterior
rings should be counter clockwise, interior (hole) rings should be
clockwise, but in some sense this is obsolete as the difference between
exterior ring and interior rings is defined by their position (exterior,
followed by zero or more interior). <code>sf::read_sf</code> has an
argument <code>check_ring_dir</code> that checks, and corrects, ring
directions and many (legacy) datasets have wrong ring directions. With
wrong ring directions, many things still work.</p>
<p>For <span class="math inline">\(S^2\)</span>, ring direction is
essential. For that reason, <code>st_as_s2</code> has an argument
<code>oriented = FALSE</code>, which will check and correct ring
directions, assuming that all exterior rings occupy an area smaller than
half the globe:</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>nc <span class="ot">=</span> <span class="fu">read_sf</span>(<span class="fu">system.file</span>(<span class="st">&quot;gpkg/nc.gpkg&quot;</span>, <span class="at">package=</span><span class="st">&quot;sf&quot;</span>)) <span class="co"># wrong ring directions</span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_area</span>(<span class="fu">st_as_s2</span>(nc, <span class="at">oriented =</span> <span class="cn">FALSE</span>)[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>]) <span class="co"># corrects ring direction, correct area:</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] 1137107793  610916077 1423145355</span></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_area</span>(<span class="fu">st_as_s2</span>(nc, <span class="at">oriented =</span> <span class="cn">TRUE</span>)[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>]) <span class="co"># wrong direction: Earth&#39;s surface minus area</span></span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] 5.100649e+14 5.100655e+14 5.100646e+14</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a>nc <span class="ot">=</span> <span class="fu">read_sf</span>(<span class="fu">system.file</span>(<span class="st">&quot;gpkg/nc.gpkg&quot;</span>, <span class="at">package=</span><span class="st">&quot;sf&quot;</span>), <span class="at">check_ring_dir =</span> <span class="cn">TRUE</span>)</span>
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_area</span>(<span class="fu">st_as_s2</span>(nc, <span class="at">oriented =</span> <span class="cn">TRUE</span>)[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>]) <span class="co"># no second correction needed here:</span></span>
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] 1137107793  610916077 1423145355</span></span></code></pre></div>
<p>Here is an example where the oceans are computed as the difference
from the full polygon representing the entire globe,</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>g <span class="ot">=</span> <span class="fu">as_s2_geography</span>(<span class="cn">TRUE</span>)</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a>g</span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="do">## &lt;geodesic s2_geography[1] with CRS=OGC:CRS84&gt;</span></span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] POLYGON ((0 -90, 0 -90))</span></span></code></pre></div>
<p>and the countries, and shown in an orthographic projection:</p>
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>co <span class="ot">=</span> <span class="fu">s2_data_countries</span>()</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a>oc <span class="ot">=</span> <span class="fu">s2_difference</span>(g, <span class="fu">s2_union_agg</span>(co)) <span class="co"># oceans</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a>b <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(<span class="fu">as_s2_geography</span>(<span class="st">&quot;POINT(-30 52)&quot;</span>), <span class="dv">9800000</span>) <span class="co"># visible half</span></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a>i <span class="ot">=</span> <span class="fu">s2_intersection</span>(b, oc) <span class="co"># visible ocean</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">st_transform</span>(<span class="fu">st_as_sfc</span>(i), <span class="st">&quot;+proj=ortho +lat_0=52 +lon_0=-30&quot;</span>), <span class="at">col =</span> <span class="st">&#39;blue&#39;</span>)</span></code></pre></div>
<p><img src="data:image/png;base64,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oaUAUoCJmMHFixe3b9++devWyMjIXbt2XboE1IPaGdvDYOkLnWQ4AvvgAByEg3Di8cdr1qtXz9/fv1mzZnXq1LFwASLWpgATMb8zZ87s2rXr4MGDhw4d2r9//9GjR2NikqEaeMFDUBk8wBncwBVcoAQ4ZHvKW3AdbkAcXIQLcBmiIQqOQ1SJEpe8vb39/Pxq1apVu3btmjVr1qxZs0SJElb6hUVsQQEmYg1Xr149duxYVFTUuXPnzp49e/bs2djY2MuXL0dHR8fGxiYlJSUkJIAzAEUgfY7Ba5AKwK2iRW86Ojo6ODg4OTm5ubm5u7u7ubm5urp6eXlVrVrV09PTw8OjaFF9K0YKFwWYSL5gMpmuXr0KpKamXrt2DXB2Ts8z7O3ty5Yta8viRPIlBZiIiBiS1qATERFDUoCJiIghKcBERMSQFGAiImJICjARETEkBZiIiBiSAkxERAxJASYiIoakABMREUNSgImIiCEpwERExJAUYCIiYkgKMBERMSQFmIiIGJICTEREDEkBJiIihqQAExERQ1KAiYiIISnARETEkBRgIiJiSAowERExJAWYiIgYkgJMREQMSQEmIiKGpAATERFDUoCJiIghKcBERMSQFGAiImJICjARETEkBZiIiBiSAkxERAxJASYiIoakABMREUNSgImIiCEpwERExJAUYCIiYkgKMBERMSQFmIiIGJICTEREDEkBJiIihqQAExERQ1KAiYiIISnARETEkBRgIiJiSAowERExJAWYiIgYkgJMREQMSQEmIiKGpAATERFDUoCJiIghKcBERMSQFGAiImJICjARETEkBZiIiBiSAkxERAxJASYiIoakABMREUNSgImIiCEpwERExJAUYCIiYkgKMBERMSQFmIiIGJICTEREDEkBJiIihqQAExERQ1KAiYiIISnARETEkBRgIiJiSAowERExJAWYiIgYkgJMREQMSQEmIiKGpAATERFDUoCJiIghKcBERMSQFGAiImJICjARETEkBZiIiBiSAkxERAxJASYiIoakABMREUNSgImIiCEpwERExJAUYCIiYkgKMBERMSQFmIiIGJICTEREDEkBJiIihqQAExERQ1KAiYiIISnARETEkBRgIiJiSAowERExJAWYiIgYkgJMREQMSQEmIiKGpAATERFDUoCJiIghKcBERMSQFGAiImJICjARETEkBZiIiBiSAkxERAxJASYiIoakABMREUP6f/6nhurGel1CAAAAAElFTkSuQmCC" /><!-- --></p>
<p>(Note that the WKT printing of the full polygon <code>g</code> is not
valid WKT, and can not be used as input as it doesn’t follow the simple
feature standard; it seems to reflect the internal representation of the
full polygon, and would require a WKT extension).</p>
<p>We can now calculate the proportion of the Earth’s surface covered by
oceans:</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_area</span>(oc) <span class="sc">/</span> <span class="fu">s2_area</span>(g)</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] 0.711301</span></span></code></pre></div>
</div>
<div id="semi-open-polygon-boundaries" class="section level2">
<h2>Semi-open polygon boundaries</h2>
<p>Polygons in <code>s2geometry</code> can be</p>
<ul>
<li>CLOSED: they contain their boundaries, and a point on the boundary
intersects with the polygon</li>
<li>OPEN: they do not contain their boundaries, points on the boundary
do not intersect with the polygon</li>
<li>SEMI-OPEN: they contain part of their boundaries, but no boundary of
non-overlapping polygons is contained by more than one polygon.</li>
</ul>
<p>In principle the DE9-IM model deals with interior, boundary and
exterior, and intersection predicates are sensitive to this (the
difference between <em>contains</em> and <em>covers</em> is all about
boundaries). DE9-IM however cannot uniquely assign points to polygons
when polygons form a polygon <em>coverage</em> (no overlaps, but shared
boundaries). This means that if we would count points by polygon, and
some points fall <em>on</em> shared polygon boundaries, we either miss
them (<em>contains</em>) or we count them double (<em>covers</em>,
<em>intersects</em>); this might lead to bias and require
post-processing. Using SEMI-OPEN non-overlapping polygons guarantees
that every point is assigned to <em>maximally</em> one polygon in an
intersection. This corresponds to e.g. how this would be handled in a
grid (raster) coverage, where every grid cell (typically) only contains
its upper-left corner and its upper and left sides.</p>
<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a>a <span class="ot">=</span> <span class="fu">as_s2_geography</span>(<span class="st">&quot;POINT(0 0)&quot;</span>)</span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a>b <span class="ot">=</span> <span class="fu">as_s2_geography</span>(<span class="st">&quot;POLYGON((0 0,1 0,1 1,0 1,0 0))&quot;</span>)</span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_intersects</span>(a, b, <span class="fu">s2_options</span>(<span class="at">model =</span> <span class="st">&quot;open&quot;</span>)) </span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] FALSE</span></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_intersects</span>(a, b, <span class="fu">s2_options</span>(<span class="at">model =</span> <span class="st">&quot;closed&quot;</span>))</span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] TRUE</span></span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_intersects</span>(a, b, <span class="fu">s2_options</span>(<span class="at">model =</span> <span class="st">&quot;semi-open&quot;</span>)) <span class="co"># a toss</span></span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] FALSE</span></span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_intersects</span>(a, b) <span class="co"># default: semi-open</span></span>
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] FALSE</span></span></code></pre></div>
</div>
<div id="bounding-cap-bounding-rectangle" class="section level2">
<h2>Bounding cap, bounding rectangle</h2>
<p>Computing the minimum and maximum values over coordinate ranges, as
<code>sf</code> does with <code>st_bbox()</code>, is of limited value
for spherical coordinates because due the the spherical space, the
<em>area covered</em> is not necessarily covered by the coordinate
range. Two examples:</p>
<ul>
<li>small regions covering the antimeridian (longitude +/- 180) end up
with a huge longitude range, which doesn’t make <em>clear</em> the
antimeridian is spanned</li>
<li>regions including a pole will end up with a latitude range not
extending to +/- 90</li>
</ul>
<p>S2 has two alternatives: the bounding cap and the bounding
rectangle:</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a>fiji <span class="ot">=</span> <span class="fu">s2_data_countries</span>(<span class="st">&quot;Fiji&quot;</span>)</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a>aa <span class="ot">=</span> <span class="fu">s2_data_countries</span>(<span class="st">&quot;Antarctica&quot;</span>)</span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_bounds_cap</span>(fiji)</span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a><span class="do">##        lng       lat    angle</span></span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a><span class="do">## 1 178.7459 -17.15444 1.801369</span></span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a><span class="fu">s2_bounds_rect</span>(<span class="fu">c</span>(fiji,aa))</span>
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true" tabindex="-1"></a><span class="do">##     lng_lo    lat_lo    lng_hi    lat_hi</span></span>
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true" tabindex="-1"></a><span class="do">## 1  177.285 -18.28799 -179.7933 -16.02088</span></span>
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true" tabindex="-1"></a><span class="do">## 2 -180.000 -90.00000  180.0000 -63.27066</span></span></code></pre></div>
<p>The cap reports a bounding cap (circle) as a mid point (lat, lng) and
an angle around this point. The bounding rectangle reports the
<code>_lo</code> and <code>_hi</code> bounds of <code>lat</code> and
<code>lng</code> coordinates. Note that for Fiji, <code>lng_lo</code>
being higher than <code>lng_hi</code> indicates that the region covers
(crosses) the antimeridian.</p>
</div>
</div>
<div id="switching-between-s2-and-geos" class="section level1">
<h1>Switching between S2 and GEOS</h1>
<p>The two-dimensional <span class="math inline">\(R^2\)</span> library
that was formerly used by <code>sf</code> is <a href="https://libgeos.org">GEOS</a>, and <code>sf</code> can be
instrumented to use GEOS or <code>s2</code>. First we will ask if
<code>s2</code> is being used by default:</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>()</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] TRUE</span></span></code></pre></div>
<p>then we can switch it off (and use GEOS) by</p>
<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">FALSE</span>)</span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched off</span></span></code></pre></div>
<p>and switch it on (and use s2) by</p>
<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">TRUE</span>)</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched on</span></span></code></pre></div>
</div>
<div id="measures" class="section level1">
<h1>Measures</h1>
<div id="area" class="section level2">
<h2>Area</h2>
<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(units)</span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a><span class="do">## udunits database from /usr/share/xml/udunits/udunits2.xml</span></span>
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true" tabindex="-1"></a>nc <span class="ot">=</span> <span class="fu">read_sf</span>(<span class="fu">system.file</span>(<span class="st">&quot;gpkg/nc.gpkg&quot;</span>, <span class="at">package=</span><span class="st">&quot;sf&quot;</span>))</span>
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">TRUE</span>)</span>
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true" tabindex="-1"></a>a1 <span class="ot">=</span> <span class="fu">st_area</span>(nc)</span>
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">FALSE</span>)</span>
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched off</span></span>
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true" tabindex="-1"></a>a2 <span class="ot">=</span> <span class="fu">st_area</span>(nc)</span>
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(a1, a2)</span>
<span id="cb15-11"><a href="#cb15-11" aria-hidden="true" tabindex="-1"></a><span class="fu">abline</span>(<span class="dv">0</span>, <span class="dv">1</span>)</span></code></pre></div>
<p><img src="data:image/png;base64,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" /><!-- --></p>
<div class="sourceCode" id="cb16"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="fu">summary</span>((a1 <span class="sc">-</span> a2)<span class="sc">/</span>a1)</span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a><span class="do">##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. </span></span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a><span class="do">## -2.638e-04 -1.650e-04 -7.133e-05 -6.448e-05  1.598e-05  2.817e-04</span></span></code></pre></div>
</div>
<div id="length" class="section level2">
<h2>Length</h2>
<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a>nc_ls <span class="ot">=</span> <span class="fu">st_cast</span>(nc, <span class="st">&quot;MULTILINESTRING&quot;</span>)</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">TRUE</span>)</span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched on</span></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a>l1 <span class="ot">=</span> <span class="fu">st_length</span>(nc_ls)</span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">FALSE</span>)</span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched off</span></span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a>l2 <span class="ot">=</span> <span class="fu">st_length</span>(nc_ls)</span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(l1 , l2)</span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true" tabindex="-1"></a><span class="fu">abline</span>(<span class="dv">0</span>, <span class="dv">1</span>)</span></code></pre></div>
<p><img src="data:image/png;base64,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" /><!-- --></p>
<div class="sourceCode" id="cb18"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="fu">summary</span>((l1<span class="sc">-</span>l2)<span class="sc">/</span>l1)</span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a><span class="do">##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. </span></span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a><span class="do">## -0.0012301 -0.0004396 -0.0001258 -0.0001123  0.0001742  0.0009660</span></span></code></pre></div>
</div>
<div id="distances" class="section level2">
<h2>Distances</h2>
<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">TRUE</span>)</span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched on</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a>d1 <span class="ot">=</span> <span class="fu">st_distance</span>(nc, nc[<span class="dv">1</span><span class="sc">:</span><span class="dv">10</span>,])</span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">FALSE</span>)</span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched off</span></span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a>d2 <span class="ot">=</span> <span class="fu">st_distance</span>(nc, nc[<span class="dv">1</span><span class="sc">:</span><span class="dv">10</span>,])</span>
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">as.vector</span>(d1), <span class="fu">as.vector</span>(d2))</span>
<span id="cb19-8"><a href="#cb19-8" aria-hidden="true" tabindex="-1"></a><span class="fu">abline</span>(<span class="dv">0</span>, <span class="dv">1</span>)</span></code></pre></div>
<p><img src="data:image/png;base64,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" /><!-- --></p>
<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="fu">summary</span>(<span class="fu">as.vector</span>(d1)<span class="sc">-</span><span class="fu">as.vector</span>(d2))</span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a><span class="do">##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. </span></span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="do">## -1424.5  -613.2  -236.5  -319.5     0.0   460.1</span></span></code></pre></div>
</div>
</div>
<div id="predicates" class="section level1">
<h1>Predicates</h1>
<p>All unary and binary predicates are available in <code>s2</code>,
except for <code>st_relate</code> with a pattern. In addition, when
using the <code>s2</code> predicates, depending on the
<code>model</code>, intersections with neighbours are only reported when
<code>model</code> is <code>closed</code> (the default):</p>
<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">TRUE</span>)</span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="do">## Spherical geometry (s2) switched on</span></span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="fu">st_intersects</span>(nc[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>,], nc[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>,]) <span class="co"># self-intersections + neighbours</span></span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true" tabindex="-1"></a><span class="do">## Sparse geometry binary predicate list of length 3, where the predicate</span></span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true" tabindex="-1"></a><span class="do">## was `intersects&#39;</span></span>
<span id="cb21-6"><a href="#cb21-6" aria-hidden="true" tabindex="-1"></a><span class="do">##  1: 1, 2</span></span>
<span id="cb21-7"><a href="#cb21-7" aria-hidden="true" tabindex="-1"></a><span class="do">##  2: 1, 2, 3</span></span>
<span id="cb21-8"><a href="#cb21-8" aria-hidden="true" tabindex="-1"></a><span class="do">##  3: 2, 3</span></span>
<span id="cb21-9"><a href="#cb21-9" aria-hidden="true" tabindex="-1"></a><span class="fu">sf_use_s2</span>(<span class="cn">TRUE</span>)</span>
<span id="cb21-10"><a href="#cb21-10" aria-hidden="true" tabindex="-1"></a><span class="fu">st_intersects</span>(nc[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>,], nc[<span class="dv">1</span><span class="sc">:</span><span class="dv">3</span>,], <span class="at">model =</span> <span class="st">&quot;semi-open&quot;</span>) <span class="co"># only self-intersections</span></span>
<span id="cb21-11"><a href="#cb21-11" aria-hidden="true" tabindex="-1"></a><span class="do">## Sparse geometry binary predicate list of length 3, where the predicate</span></span>
<span id="cb21-12"><a href="#cb21-12" aria-hidden="true" tabindex="-1"></a><span class="do">## was `intersects&#39;</span></span>
<span id="cb21-13"><a href="#cb21-13" aria-hidden="true" tabindex="-1"></a><span class="do">##  1: 1</span></span>
<span id="cb21-14"><a href="#cb21-14" aria-hidden="true" tabindex="-1"></a><span class="do">##  2: 2</span></span>
<span id="cb21-15"><a href="#cb21-15" aria-hidden="true" tabindex="-1"></a><span class="do">##  3: 3</span></span></code></pre></div>
</div>
<div id="transformations" class="section level1">
<h1>Transformations</h1>
<p><code>st_intersection</code>, <code>st_union</code>,
<code>st_difference</code> and <code>st_sym_difference</code> are
available as <code>s2</code> equivalents. N-ary intersection and
difference are not (yet) present; cascaded union is present; unioning by
feature does not work with <code>s2</code>.</p>
<div id="buffers" class="section level2">
<h2>Buffers</h2>
<p>Buffers can be calculated for features with geographic coordinates as
follows, using an unprojected object representing the UK as an
example:</p>
<div class="sourceCode" id="cb22"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a>uk <span class="ot">=</span> <span class="fu">s2_data_countries</span>(<span class="st">&quot;United Kingdom&quot;</span>)</span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a><span class="fu">class</span>(uk)</span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] &quot;s2_geography&quot; &quot;wk_vctr&quot;</span></span>
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true" tabindex="-1"></a>uk_sfc <span class="ot">=</span> <span class="fu">st_as_sfc</span>(uk) </span>
<span id="cb22-5"><a href="#cb22-5" aria-hidden="true" tabindex="-1"></a>uk_buffer <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(uk, <span class="at">distance =</span> <span class="dv">20000</span>)</span>
<span id="cb22-6"><a href="#cb22-6" aria-hidden="true" tabindex="-1"></a>uk_buffer2 <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(uk, <span class="at">distance =</span> <span class="dv">20000</span>, <span class="at">max_cells =</span> <span class="dv">10000</span>)</span>
<span id="cb22-7"><a href="#cb22-7" aria-hidden="true" tabindex="-1"></a>uk_buffer3 <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(uk, <span class="at">distance =</span> <span class="dv">20000</span>, <span class="at">max_cells =</span> <span class="dv">100</span>)</span>
<span id="cb22-8"><a href="#cb22-8" aria-hidden="true" tabindex="-1"></a><span class="fu">class</span>(uk_buffer)</span>
<span id="cb22-9"><a href="#cb22-9" aria-hidden="true" tabindex="-1"></a><span class="do">## [1] &quot;s2_geography&quot; &quot;wk_vctr&quot;</span></span>
<span id="cb22-10"><a href="#cb22-10" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(uk_sfc)</span>
<span id="cb22-11"><a href="#cb22-11" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">st_as_sfc</span>(uk_buffer))</span>
<span id="cb22-12"><a href="#cb22-12" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">st_as_sfc</span>(uk_buffer2))</span>
<span id="cb22-13"><a href="#cb22-13" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">st_as_sfc</span>(uk_buffer3))</span>
<span id="cb22-14"><a href="#cb22-14" aria-hidden="true" tabindex="-1"></a>uk_sf <span class="ot">=</span> <span class="fu">st_as_sf</span>(uk) </span></code></pre></div>
<p><img src="data:image/png;base64,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" width="50%" /><img src="data:image/png;base64,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" width="50%" /><img src="data:image/png;base64,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" width="50%" /><img src="data:image/png;base64,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" width="50%" /></p>
<p>The plots above show that you can adjust the level of spatial
precision in the results of s2 buffer operations with the
<code>max_cells</code> argument, set to 1000 by default. Deciding on an
appropriate value is a balance between excessive detail increasing
computational resources (represented by <code>uk_buffer2</code>, bottom
left) and excessive simplification (bottom right). Note that buffers
created with s2 <em>always</em> follow s2 cell boundaries, they are
never smooth. Hence, choosing a large number for <code>max_cells</code>
leads to seemingly smooth but, zoomed in, very complex buffers.</p>
<p>To achieve a similar result you could first transform the result and
then use the <code>st_buffer()</code> function from <code>sf</code>. A
simple benchmark shows the computational efficiency of the
<code>s2</code> geometry engine in comparison with transforming and then
creating buffers:</p>
<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="co"># the sf way</span></span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">system.time</span>({</span>
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a>  uk_projected <span class="ot">=</span> <span class="fu">st_transform</span>(uk_sfc, <span class="dv">27700</span>)</span>
<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a>  uk_buffer_sf <span class="ot">=</span> <span class="fu">st_buffer</span>(uk_projected, <span class="at">dist =</span> <span class="dv">20000</span>)</span>
<span id="cb23-5"><a href="#cb23-5" aria-hidden="true" tabindex="-1"></a>})</span>
<span id="cb23-6"><a href="#cb23-6" aria-hidden="true" tabindex="-1"></a><span class="do">##    user  system elapsed </span></span>
<span id="cb23-7"><a href="#cb23-7" aria-hidden="true" tabindex="-1"></a><span class="do">##   0.036   0.000   0.036</span></span>
<span id="cb23-8"><a href="#cb23-8" aria-hidden="true" tabindex="-1"></a><span class="co"># sf way with few than the 30 segments in the buffer</span></span>
<span id="cb23-9"><a href="#cb23-9" aria-hidden="true" tabindex="-1"></a><span class="fu">system.time</span>({</span>
<span id="cb23-10"><a href="#cb23-10" aria-hidden="true" tabindex="-1"></a>  uk_projected <span class="ot">=</span> <span class="fu">st_transform</span>(uk_sfc, <span class="dv">27700</span>)</span>
<span id="cb23-11"><a href="#cb23-11" aria-hidden="true" tabindex="-1"></a>  uk_buffer_sf2 <span class="ot">=</span> <span class="fu">st_buffer</span>(uk_projected, <span class="at">dist =</span> <span class="dv">20000</span>, <span class="at">nQuadSegs =</span> <span class="dv">4</span>)</span>
<span id="cb23-12"><a href="#cb23-12" aria-hidden="true" tabindex="-1"></a>})</span>
<span id="cb23-13"><a href="#cb23-13" aria-hidden="true" tabindex="-1"></a><span class="do">##    user  system elapsed </span></span>
<span id="cb23-14"><a href="#cb23-14" aria-hidden="true" tabindex="-1"></a><span class="do">##   0.012   0.000   0.011</span></span>
<span id="cb23-15"><a href="#cb23-15" aria-hidden="true" tabindex="-1"></a><span class="co"># s2 with default cell size</span></span>
<span id="cb23-16"><a href="#cb23-16" aria-hidden="true" tabindex="-1"></a><span class="fu">system.time</span>({</span>
<span id="cb23-17"><a href="#cb23-17" aria-hidden="true" tabindex="-1"></a>  uk_buffer <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(uk, <span class="at">distance =</span> <span class="dv">20000</span>)</span>
<span id="cb23-18"><a href="#cb23-18" aria-hidden="true" tabindex="-1"></a>})</span>
<span id="cb23-19"><a href="#cb23-19" aria-hidden="true" tabindex="-1"></a><span class="do">##    user  system elapsed </span></span>
<span id="cb23-20"><a href="#cb23-20" aria-hidden="true" tabindex="-1"></a><span class="do">##   0.037   0.000   0.038</span></span>
<span id="cb23-21"><a href="#cb23-21" aria-hidden="true" tabindex="-1"></a><span class="co"># s2 with 10000 cells</span></span>
<span id="cb23-22"><a href="#cb23-22" aria-hidden="true" tabindex="-1"></a><span class="fu">system.time</span>({</span>
<span id="cb23-23"><a href="#cb23-23" aria-hidden="true" tabindex="-1"></a>  uk_buffer2 <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(uk, <span class="at">distance =</span> <span class="dv">20000</span>, <span class="at">max_cells =</span> <span class="dv">10000</span>)</span>
<span id="cb23-24"><a href="#cb23-24" aria-hidden="true" tabindex="-1"></a>})</span>
<span id="cb23-25"><a href="#cb23-25" aria-hidden="true" tabindex="-1"></a><span class="do">##    user  system elapsed </span></span>
<span id="cb23-26"><a href="#cb23-26" aria-hidden="true" tabindex="-1"></a><span class="do">##   0.301   0.000   0.301</span></span>
<span id="cb23-27"><a href="#cb23-27" aria-hidden="true" tabindex="-1"></a><span class="co"># s2 with 100 cells</span></span>
<span id="cb23-28"><a href="#cb23-28" aria-hidden="true" tabindex="-1"></a><span class="fu">system.time</span>({</span>
<span id="cb23-29"><a href="#cb23-29" aria-hidden="true" tabindex="-1"></a>  uk_buffer2 <span class="ot">=</span> <span class="fu">s2_buffer_cells</span>(uk, <span class="at">distance =</span> <span class="dv">20000</span>, <span class="at">max_cells =</span> <span class="dv">100</span>)</span>
<span id="cb23-30"><a href="#cb23-30" aria-hidden="true" tabindex="-1"></a>})</span>
<span id="cb23-31"><a href="#cb23-31" aria-hidden="true" tabindex="-1"></a><span class="do">##    user  system elapsed </span></span>
<span id="cb23-32"><a href="#cb23-32" aria-hidden="true" tabindex="-1"></a><span class="do">##   0.005   0.000   0.005</span></span></code></pre></div>
<p>The result of the previous benchmarks emphasise the point that there
are trade-offs between geographic resolution and computational
resources, something that web developers working on geographic services
such as Google Maps understand well. In this case the default setting of
1000 cells, which runs slightly faster than the default transform -&gt;
buffer workflow, is probably appropriate given the low resolution of the
input geometry representing the UK.</p>
</div>
<div id="st_buffer-or-st_is_within_distance" class="section level2">
<h2><code>st_buffer</code> or <code>st_is_within_distance</code>?</h2>
<p>As discussed in the <a href="https://github.com/r-spatial/sf/issues/1367"><code>sf</code> issue
tracker</a>, deciding on workflows and selecting appropriate levels of
level of geographic resolution can be an iterative process.
<code>st_buffer</code> as powered by GEOS, for <span class="math inline">\(R^2\)</span> data, are smooth and (nearly) exact.
<code>st_buffer</code> as powered by <span class="math inline">\(S^2\)</span> is rougher, complex, non-smooth, and
may need tuning. An common pattern where <code>st_buffer</code> is used
is this:</p>
<ul>
<li>compute buffers around a set of features <code>x</code> (points,
lines, polygons)</li>
<li>within each of these buffers, find all occurances of some other
spatial variable <code>y</code> and aggregate them (e.g. count points,
or average a raster variable like precipitation or population
density)</li>
<li>work with these aggregated values (discard the buffer)</li>
</ul>
<p>When this is the case, and you are working with geographic
coordinates, it may pay off to <em>not</em> compute buffers, but instead
directly work with <code>st_is_within_distance</code> to select, for
each feature of <code>x</code>, all features of <code>y</code> that are
within a certain distance <code>d</code> from <code>x</code>. The <span class="math inline">\(S^2\)</span> version of this function uses spatial
indexes, so is fast for large datasets.</p>
</div>
<div id="references" class="section level2">
<h2>References</h2>
<ul>
<li>Dewey Dunnington, Edzer Pebesma and Ege Rubak, 2020. s2: Spherical
Geometry Operators Using the <span class="math inline">\(S^2\)</span>
Geometry Library. <a href="https://r-spatial.github.io/s2/" class="uri">https://r-spatial.github.io/s2/</a>, <a href="https://github.com/r-spatial/s2" class="uri">https://github.com/r-spatial/s2</a></li>
</ul>
</div>
</div>



<!-- code folding -->


<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
  (function () {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src  = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
    document.getElementsByTagName("head")[0].appendChild(script);
  })();
</script>

</body>
</html>
